package ca.etsmtl.gti785.servlet.Interfaces;


import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.container.AsyncResponse;
import javax.ws.rs.container.Suspended;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.server.ManagedAsync;


//@Path("/fileTransfer") <-- mettre dans la classe implemente
/**
 * Interface pour le file transfer (pour la méta-équipe)
 * @author Timothé Fillion-Brunet
 */
public interface IFileTransfer {
	
	
	//démarer un transfer de fichier
	//public void startTransferToServer(String url, int port, List<Fichier> file);
	//ATTENTION : on donne un String file qui est un JSON d'une List<Fichier>!!!!
	
	//ex: {Status:OK} client devrait faire un post apres pour avoir un longpolling sur le status du transfer
	@POST
	@ManagedAsync
	@Produces(MediaType.APPLICATION_JSON)
	public void startTransfer(@Context ServletContext context, @Suspended final AsyncResponse asyncResponse, 
			@Context HttpServletRequest request, @QueryParam("body") String fileTransferJsonString);

	
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public String getPortForTransfer();
}
